package controller;

import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Iterator;
import model.IFornecedor;
import view.FornecedorGUI;

public class FornecedorCtrl implements IFornecedorCtrl{
    
    private IFornecedor model;
    private FornecedorGUI fornecedorGUI;

    public FornecedorCtrl(IFornecedor model) {
        this.model = model;
        fornecedorGUI = new FornecedorGUI(model, this);
        fornecedorGUI.criarTela();
    }
    
    private void setFornecedor(int codigo, String nome, String endereco, String email, String bairro, 
            String cidade, String cep, String uf, String fone, String celular, String cpf, String obs, 
            String rg, String orgaorg, Date dataCadatro, String cnpj, String fax, String contato, 
            String auditoria) {
        model.setCodigo(codigo);
        model.setBairro(bairro);        
        model.setCelular(celular);        
        model.setCep(cep);        
        model.setCidade(cidade);        
        model.setCnpj(cnpj);        
        model.setContato(contato);        
        model.setCpf(cpf);       
        model.setDataCadatro(dataCadatro);
        model.setEmail(email);        
        model.setEndereco(endereco);        
        model.setFax(fax);        
        model.setFone(fone);        
        model.setNome(nome);        
        model.setObs(obs);        
        model.setOrgaorg(orgaorg);        
        model.setRg(rg);        
        model.setUf(uf);
        model.setAuditoria(auditoria);
    }
    
    @Override
    public void inserir(int codigo, String nome, String endereco, String email, String bairro, 
            String cidade, String cep, String uf, String fone, String celular, String cpf, String obs, 
            String rg, String orgaorg, Date dataCadatro, String cnpj, String fax, String contato, 
            String auditoria) {
        setFornecedor(codigo, nome, endereco, email, bairro, cidade, cep, uf, fone, celular, cpf, 
                obs, rg, orgaorg, dataCadatro, cnpj, fax, contato, auditoria);
        model.setProximoCodigo();                               
        model.inserir();        
    }
       
    @Override
    public void atualizar(int codigo, String nome, String endereco, String email, String bairro, 
            String cidade, String cep, String uf, String fone, String celular, String cpf, String obs, 
            String rg, String orgaorg, Date dataCadatro, String cnpj, String fax, String contato, 
            String auditoria) {
        setFornecedor(codigo, nome, endereco, email, bairro, cidade, cep, uf, fone, celular, cpf, 
                obs, rg, orgaorg, dataCadatro, cnpj, fax, contato, auditoria);                       
        model.atualizar();        
    }
            
    @Override
    public void excluir(int codigo){
        model.setCodigo(codigo);
        model.excluir();
    }
    
    @Override
    public ArrayList pesquisar(int iOpcao, String iPesquisa) {        
        ArrayList<IFornecedor> fornecedores = model.pesquisar(iOpcao, iPesquisa);
        ArrayList lstTemp = new ArrayList();
        IFornecedor fornecedorTemp;
        Iterator i = fornecedores.iterator();
        SimpleDateFormat formData = new SimpleDateFormat("dd/MM/yyyy");        
        while (i.hasNext()) {
            fornecedorTemp = (IFornecedor) i.next();                                             
            lstTemp.add(new String[]{String.valueOf(fornecedorTemp.getCodigo()), fornecedorTemp.getNome(),
                fornecedorTemp.getFone(),fornecedorTemp.getEmail(),fornecedorTemp.getCelular(),
                fornecedorTemp.getFax(),fornecedorTemp.getCnpj(),fornecedorTemp.getContato(),
                fornecedorTemp.getRg(),fornecedorTemp.getOrgaorg(),fornecedorTemp.getCpf(),
                fornecedorTemp.getEndereco(),fornecedorTemp.getBairro(),fornecedorTemp.getCidade(),
                fornecedorTemp.getUf(),fornecedorTemp.getCep(),formData.format(fornecedorTemp.getDataCadatro()),
                fornecedorTemp.getObs(),fornecedorTemp.getAuditoria()});       
        }
        return lstTemp;   
    }
    
    @Override
    public ArrayList getAll() { 
        ArrayList<IFornecedor> fornecedores = model.getAll();
        ArrayList lstTemp = new ArrayList();
        IFornecedor fornecedorTemp;
        Iterator i = fornecedores.iterator();
        SimpleDateFormat formData = new SimpleDateFormat("dd/MM/yyyy");        
        while (i.hasNext()) {
            fornecedorTemp = (IFornecedor) i.next();                                             
            lstTemp.add(new String[]{String.valueOf(fornecedorTemp.getCodigo()), fornecedorTemp.getNome(),
                fornecedorTemp.getFone(),fornecedorTemp.getEmail(),fornecedorTemp.getCelular(),
                fornecedorTemp.getFax(),fornecedorTemp.getCnpj(),fornecedorTemp.getContato(),
                fornecedorTemp.getRg(),fornecedorTemp.getOrgaorg(),fornecedorTemp.getCpf(),
                fornecedorTemp.getEndereco(),fornecedorTemp.getBairro(),fornecedorTemp.getCidade(),
                fornecedorTemp.getUf(),fornecedorTemp.getCep(),formData.format(fornecedorTemp.getDataCadatro()),
                fornecedorTemp.getObs(),fornecedorTemp.getAuditoria()});       
        }
        return lstTemp;
    }    

    @Override
    public int getCodigo() {
        return model.getCodigo();
    }   
}

